Upoznaćemo kako R funkcioniše
Naučićemo različite vrste varijabli
Samo ćemo se dotaći nekoliko R paketa poput delova paketa tidyverse (dplyr i ggplot2)
Napravićemo panel sa informacijama koje se nalaze u skupu podataka ujedi pasa
Sa linka preuzmite folder sa vežbom: https://github.com/tixwitchy/Psi_iz_Nju_Jorka
Klinkite na Clone zeleno dugme i potom Download ZIP
Otvorite fajl Psi_iz_Nju_Jorka.Rproj
U levom donjem delu R Studio-a tzv. konzole (Console) kopirajte sledeći kod i kliknite enter:
Pošto ste instalirali R i R Studio potrebno je da set a working directory (postavite direktorijum) gde će se čuvati sav rad na određenom projektu/zadatku.
Najbolje je da izberete File/New Project koji će automatski čuvati podatke na istom mestu (ali sad to nećemo raditi).
Pošto smo već otvorili fajl Psi_iz_Nju_Jorka.Rproj radni direktorijum je već setovan.
Kada instalirate R, imate osnovne funkcije koje su vam na raspolaganju u okviru tzv. Base R (osnovnog R-a).
Medjutim, kako biste pristupili funkcijama ili podacima koje su drugi ljudi napravili ili prikupili postoje brojni R paketi koji su vam na raspolaganju.
R paket je skup funkcija (koda), podataka, dokumentacije, vinjeta (primera).
Važna napomena - R je osetljiv na velika i mala slova tako da pripazite na pisanje i velika i mala slova!
Kako biste pristupili informacijama koje se nalaze u R paketu, potrebno je prvo da su ti paketi instalirani i potom da im se pristupi kroz njihove biblioteke. Koristite sledeći kod da biste instalirali pakete i uvezli biblioteke.
Ukucajte u vašoj konzoli sledeću komandu i pritisnite enter.
## [1] 4
Koristite <- da biste napravili objekte u R-u. On se zove assignement operator (operator dodele).
## [1] 15
Set podataka o ujedima pasa je preuzet iz R paketa nycdogs Kierana Healy-ja. Za našu vežbu adaptiran je na srpski jezik, uključuje samo 2017. godinu i nekoliko varijabli. Pa hajde da pogledamo kako set podataka izgleda.
Važna napomena: Retko ćete zaista naići na set podataka koji je već pripremljen za analizu. Obično je potrebno izmedju 50% i 80% vremena da očistite i pripremite podatke.
Prvo ćemo da unesemo i pregledamo csv fajl o ujedima pasa u Nju Jorku za 2017. godinu uz pomoć sledećeg koda:
Set podataka ima 3072 reda koje ćemo zvati obzervacije i 6 kolona koje ćemo zvati varijable. Kao što možete da vidite, postoje različiti tipovi varijabli kao što su karakter, datum, decimalni.
## Rows: 3,072
## Columns: 6
## $ datum_ujeda <date> 2017-01-02, 2017-01-02, 2017-01-04, 2017-01-07, 2017-0…
## $ rasa <chr> "Labrador Retriever Crossbreed", "Lhasa Apso", "Pit Bul…
## $ pol <chr> "Mužjak", "Mužjak", "Nepoznato", "Nepoznato", "Mužjak",…
## $ sterilisan <chr> "Ne", "Da", "Ne", "Ne", "Da", "Ne", "Ne", "Ne", "Ne", "…
## $ distrikt <chr> "Bruklin", "Bruklin", "Bruklin", "Bruklin", "Bruklin", …
## $ poštanski_broj <dbl> 11231, 11211, 11219, 11216, 11216, 11229, 11216, 11206,…
Merljive su one varijable čija vrednost je izražena numerički (Numeric):
Ceo broj/Integer: Godine, broj mačića
Realni (Decimalni)/Double (Continuous): Visina, težina
Atributivne su one čija vrednost je prikazana u vidu karakteristike ili atributa:
Karakteri: Crno, žuto, belo
Faktori (ordinalne): Hladno, mlako, toplo, vruće
U gornjem levom uglu pritisnite ikonu belog dokument sa plus znakom i izaberite R Markdown. Potom kliknite i otvorite Flex Dashboard templejt.
U tidyverse paketu postoji takozvani operator “cev”/pipe operator %>%. On prenosi rezultat sa leve strane kao prvi argument funkcije na desnoj strani. Zapravo povezuje više operacija nad podacima.
U Setup delu koda, mi ćemo uneti set podataka o ujedima pasa i kreirati podskup ujeda prema distriktu koji nam je potreban za tekstualni deo panela.
podacipsidistrikt <- podacipsi2017 %>%
group_by (distrikt) %>%
tally() %>% # funkcija koja se koristi za brojanje slučajeva ujeda
arrange (desc (n)) %>% # nova kolona n (broj ujeda) poredjaćemo od najvećeg ka najmanjem
mutate (procenat = round ((n/sum(n)) * 100, 0)) # dodaćemo još jednu kolonu za procente i nazvati je procenatSada ćemo pogledati prvih 5 distrikta sa najvećim brojem ujeda
## # A tibble: 5 x 3
## distrikt n procenat
## <chr> <int> <dbl>
## 1 Kvins 817 27
## 2 Bruklin 690 22
## 3 Menhetn 663 22
## 4 Bronks 506 16
## 5 Ostrvo Stejtn 284 9
Koristićemo znak `, koji prati slovo r i odredjena funkcija koju ćemo zatvoriti sa istim znakom. Na ovaj način će nam se automatski uneti rezultat funkcije u tekst. Na primer, ako bismo koristili podskup za neku od sledećih godina, kod će automatski ažurirati podatke u tekstu. Kako biste pristupili odredjenoj vrednosti iz skupa podataka možete da koristite sledeći kod gde prvi broj u zagradi označava broj reda a drugi broj kolone.
## # A tibble: 1 x 1
## distrikt
## <chr>
## 1 Kvins
### **Koliko psi ujedaju u Nju Jorku** {data-height=350,align=justify}
Ovaj panel prikazuje osnovnu statistiku ujeda pasa u Nju Jorku u 2017. godini.
Podaci prikazuju da je bilo ukupno **`r nrow(podacipsi2017)`** ujeda.
Stubičasti grafikon (bar chart) sa desne strane prikazuje koje tri rase pasa su najčešće ujedale.
Iako možda postoji izvestan trend koji sugeriše da su **Pit bulovi** najagresivniji,
možda je samo slučaj da ih ima znatno više nego drugih rasa pasa u Nju Jorku.
**`r podacipsidistrikt[1,1]`** i **`r podacipsidistrikt[2,1]`**
su dva distrikta sa najvećim procentom ujeda **`r podacipsidistrikt[1,3]`%** i **`r podacipsidistrikt[2,3]`%**.
### **Tri rase pasa sa najvećim brojem ujeda u 2017. godini** Prvo, napravićemo podskup sa tri rase pasa sa najviše ujeda. Ponovo ćemo ovaj deo koda staviti u prvi Setup deo našeg R panela/R markdown fajla.
podacipsirasa <- podacipsi2017 %>%
group_by (rasa) %>% #grupisanje prema varijabli rasa
tally () %>% #tally izračunava broj ujeda prema rasi jer smo prethodno tako grupisali
rename (Broj_ujeda = n) %>% #pošto imamo kolonu "n" promenićemo joj ime
arrange (desc (Broj_ujeda)) %>% #poređaćemo rase prema broju ujeda od najvećeg ka najmanjem
top_n(3) #izabraćemo samo prve tri rase Koristićemo dva paketa za izradu grafikona, jedan (ggplot2) kreira stubičasti grafikon, a drugi (plotly) omogućiće da se pojave informacije kada se pređe kursorom preko grafikona. Ggplot2 je paket koji je napravio Hadley Wickam koji se zasniva na takozvanoj gramatici grafikona.
Ona vam omogućava da napravite grafikon u vidu slojeva kako biste kreirali grafički prikaz koji želite.
podaci
estetsko mapiranje
geometrijski objekti
statističke transformacije
skale
koordinatni sistem
repozicioniranje
više panela jedan do drugog/faceting
Umesto Chart A napisaćemo: Tri rase pasa sa najvećim brojem ujeda u 2017. godini i koristićemo ovaj kod za izradu grafikon.
p <- ggplot (data = podacipsirasa) + #podaci koji nam trebaju za grafikon
geom_col (aes (x = rasa, y = Broj_ujeda),#ovde imamo estetsko mapiranje (određivanje x i y ose) i geometrijski objekat tj biramo vrstu grafikona
fill = c("darkred", "darkgreen", "darkblue")) + #određujemo boju svakog stuba
ylab ("Broj ujeda") + #dodajemo naslov y osi
theme (legend.position = "none", #stilsko sređivanje grafikona
panel.background = element_rect (fill = "lightcyan")) #sklonićemo legendu i promenićemo boju pozadine
#Promenićemo ga u interaktivni grafikon uz pomoc paketa plotly
p <- ggplotly (p)
pDodaćemo Setup delu našeg fajla sledeći kod koji će transformisati varijablu karakter-rasa u faktor. Odredićemo joj nivoe kako bi se ispravno prikazao broj ujeda u odnosu na rasu - prvi nivo je rasa Pit Bull, zatim Nepoznata i na kraju Shih Tzu.
Napomena: Kako biste koristili određenu kolonu/varijablu u R-u, povezujemo set podataka sa tom kolonom uz pomoć oznake za dolar.
Prvo ćemo u Setup delu našeg templejta za panel, napraviti podskup koji neće sadržati kolonu poštanski broj.
Prvo ćemo naslov Tabela ujeda pasa u Nju Jorku u 2017. godini {data-height=650} umesto Chart B. Ovom prilikom ćemo pobrisati chart C i sve ispod jer nam taj kvadrat zapravo ni ne treba. Potom ćemo dodati pretraživu tabelu uz pomoć DT paketa odmah ispod ovog naslova.
“Mi pretpostavljamo da nešto što vidimo u podacima može da se primeni van okvira u kome su ti podaci nastali (vreme, mesto i uslovi).”
— Ben Jones, Kako izbeći pogrešan pristup u radu sa podacima
Kako bismo mogli da zakljucimo da su Pit Bull-ovi zaista agresivni potrebno je da se uradi još istraživanja.
Da li je realno da se izvode zaklučci na osnovu ovolikog broja obzervacija? Da li su podaci pouzdani?
Zato je poželjno da eksperti u svojim oblastima znaju da naprave ovakve vizuelne prikaze. Oni već poseduju ekspertizu na osnovu koje mogu da izvuku ispravne zaključke. Ovaj alat može da im pomogne da dođu do šire publike kao i da im omogući da prate i doprinose radu drugih stručnjaka.
Ako vaš panel sadrži shiny elemente možete da ih objavite putem Shinyapps.io